package com.codefish.framework.spring.beans.factory;

/**
 * FactoryBean接口，当某个bean实例实现了该接口时，调用BeanFactory的getBean获得的是
 *
 * @author <a href='https://gitee.com/hzf2281'>codefish</a>
 * @version 1.0.0
 * @since 2022/10/08 下午 03:50
 */
public interface IFactoryBean<T> {
    /**
     * 获取FactoryBean的bean实例
     *
     * @return 返回的bean实例
     */
    T getObject();

    /**
     * 返回FactoryBean创建的对象类型，如果为null则表示不确定实例类型
     *
     * @return 创建的实例类型
     */
    Class<?> getObjectType();

    /**
     * 标识FactoryBean产生的实例是否为单例，默认为true
     *
     * @return FactoryBean产生的实例是否为单例
     */
    default boolean isSingleton() {
        return true;
    }
}
